﻿using System;
using System.Collections.Generic;

using System.Web;
using com.byt.webcore;
using com.byt.suce.db.mapper;
using com.byt.suce.db.factory;
using com.byt.webcore.utils;
using System.Data.Common;
using MYLSOFT.JsonSimple;

namespace suce.security
{
    /// <summary>
    /// Summary description for Desktop
    /// </summary>
    public class Desktop : ServletBase
    {


        protected override void doCommand(com.byt.webcore.ServletBase.Parameters p)
        {
            try
            {
                if ("INIT".Equals(p.command))
                    INIT(p);
                else if ("LOGIN".Equals(p.command))
                    LOGIN(p);
            }
            catch (Exception ex)
            {
                p.print(ex.Message + "\n" + ex.Source);
            }

        }

        protected void INIT(ServletBase.Parameters p)
        {
            PkgSeguridad.AppGetinfoParam param = PkgSeguridadFactory.create().appGetinfo(p.conn, p.getMap());
            p.print(Utils.getJSONObject(param.CurOut));
            param.CurOut.Close();
        }


        protected void LOGIN(ServletBase.Parameters p)
        {
            if ("INIT".Equals(p.subcommand))
            {
                // Iniciar sesion
                JSONObject user = com.byt.webcore.security.Security.loginUser(p);
                com.byt.webcore.security.Security.setUserToCookie(p, user);
                p.print(new JSONObject());

            }
            else if ("RECONECT".Equals(p.subcommand))
            {
                // Reconectar a un usuario previamente logueado
                JSONObject user = com.byt.webcore.security.Security.loginUser(p);
                JSONObject oldUser = com.byt.webcore.security.Security.getUserFromStringEncrypt(p, p.getParameter("_dcp"));

                if (!user["iduser"].ToString().Equals(oldUser["iduser"].ToString()))
                    throw new Exception("Los datos ingresados no coinciden con el usuario que inicio sesión. Para continuar presione <b>F5</b>");

                com.byt.webcore.security.Security.setUserToCookie(p, user);

            }
            else if ("GETDATA".Equals(p.subcommand))
            {
                // Leer datos del Usuario que inicio sesion
                JSONObject result = com.byt.webcore.security.Security.getUserData(p);
                p.print(result);

            }
            else if ("REMEMBER".Equals(p.subcommand))
            { // RECORDARME EN ESTA MAQUINA
                // Leer datos del Usuario que inicio sesion
                JSONObject result = com.byt.webcore.security.Security.getUserData(p);
                p.print(result);

            }
            else if ("CLOSE".Equals(p.subcommand))
            {


            }

        }


    }

}